﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Enviroment
{

    /*1、T:new()表示类型参数必须具有公共无参构造函数，具有多个约束存在时，必须将new()置于最后
     *2、T:struct 表示类型参数必须是值类型
     *3、T:class 表示类型参数必须是引用类型，显然class与struct不能同时指定
     *4、基类名，表示类型参数必须是基类极其派生类，例如 T:Student 但是不能同时指定基类名和class
     *5、接口名，表示类型参数必须是指定的接口或者实现了该接口的接口，可以指定多个约束
     */

    /// <summary>
    /// 泛型约束Demo
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class MyArray<T> where T : new()
    {

    }

    class EnviromentDemo
    {
        static void Main(string[] args)
        {
            //获取当前目录
            Console.WriteLine("当前目录1：{0}", Environment.CurrentDirectory);

            //获取机器名一
            Console.WriteLine("机器名称一：{0}", Environment.MachineName);

            //获取机器名二
            Console.WriteLine("网络获取电脑名称：{0}", System.Net.Dns.GetHostName());

            //根据电脑名取出全部IP地址
            Console.WriteLine("根据电脑名取出全部IP地址:{0}", System.Net.Dns.GetHostEntry("TYL").AddressList.FirstOrDefault());

            //Console.WriteLine("根据电脑名取出全部IP地址");
            //foreach (var item in System.Net.Dns.GetHostEntry("TYL").AddressList)
            //{
            //    Console.WriteLine(item.Address.ToString());
            //}

            //根据IP地址取出电脑名
            Console.WriteLine("根据IP地址取出电脑名：{0}", System.Net.Dns.GetHostEntry("192.168.1.100").HostName);

            //获取操作系统信息
            Console.WriteLine("操作系统：{0}", Environment.OSVersion);

            //获取当前用户名称
            Console.WriteLine("用户名称：{0}", Environment.UserName);

            Console.WriteLine("处理器数量：{0}", Environment.ProcessorCount);

            Console.WriteLine("开发语言版本:{0}", Environment.Version);

            //当前电脑所属网域
            Console.WriteLine("当前用户关联的网络域名:{0}", Environment.UserDomainName);

            string[] strDrives = Environment.GetLogicalDrives();
            Console.Write("逻辑驱动器名称:");
            foreach (var item in strDrives)
            {

                Console.Write(item.ToString() + "   ");
            }
            Console.WriteLine();


            Console.ReadKey();
        }

    }

}
